Networked computer systems provide the opportunity for people to collaborate by using computers or terminals connected to the network. These people, known as users, may collaborate with other users by way of shared electronic documents. Sharing electronic documents occurs when one user has access to an electronic document at the same time that another user has access to an electronic document. For example, a user might interact with a spreadsheet at the same time another user interacts with that same spreadsheet.
During the course of sharing electronic documents, changes often occur to the document. These changes may impact a user's experience, or they may not, depending on the user's current interaction with the document. For example, an initial user may make a change to a shared electronic document, and, in some instances, it may be valuable for another user to be provided with information regarding the change. The value may result because the other user is interacting with a portion of the shared electronic document that is affected by the change. Other times, there may be little value in the other user receiving information regarding the change. For example, there may be little value in sending a change when the other user is interacting with, e.g., viewing, a portion of the shared electronic document that is not affected by the change.
As such, it is desirous to manage how and when a user's computer, also referred to as a client computer, receives information with respect to changes made in a shared electronic document. Previous attempts to manage this information exchange include a client requesting information regarding changes to a shared electronic document at regular intervals. This, however, often led to large amounts of unneeded traffic on the network and long delays for the information to travel between machines. For example, the client would send requests even though there were no changes to the shared-electronic document.
Additionally, large portions of the client's computational resources were used in previous attempts to manage handling changes to a shared electronic document. This typically occurs because shared electronic documents contain large amounts of information. As such, it is often impractical to send all of the information contained in the electronic document in response to a request. A previous work-around was to send compressed and/or coded information sufficient for the client to recreate the shared-electronic document change. Decompression and translation of this information, however, often taxed the computational capabilities of the client.
It is with respect to these and other general considerations that embodiments have been made. Also, although relatively specific problems have been discussed, it should be understood that the embodiments should not be limited to solving the specific problems identified in the background.